[Amazon FSx for NetApp ONTAP] ファイル共有のACLでReadのみの明示的なDenyをONTAPが認識できるのか確認してみた

[Amazon FSx for NetApp ONTAP] ファイル共有のACLでReadのみの明示的なDenyをONTAPが認識できるのか確認してみた

ファイル共有に対してReadのみ、ReadとChangeのみDenyしたい場合は手動で設定変更をしよう
Clock Icon2024.04.28

ONTAP上では No Access と表現されているけどReadのみの明示的なDenyって設定できるのだとうか

こんにちは、のんピ(@non____97)です。

皆さんはしたいなと思ったことはありますか? 私はあります。

以下記事で紹介しているとおり、ONTAPではReadのみやRead/Changeのみの明示的なDenyはできません。全てNo Acceessと設定することになります。

https://dev.classmethod.jp/articles/amazon-fsx-for-netapp-ontap-migrate-multiple-file-share-settings-with-netapp-ontap-powershell-toolkit/

そのため、仮にReadのみの明示的なDenyを設定したい場合はONTAP CLIやONTAP REAST APIではなく、MMCスナップインなどから設定変更することになります。

この場合、ONTAPとしてReadのみの明示的なDenyを受け付け、認識してくれるのでしょうか。

実際に試してみます。

なお、私個人としてはReadやChangeは拒否して、所有者やアクセス権の変更を暗黙的に許可するシチュエーションやメリットは思いつきません。Readが拒否されているのであれば、他の操作も拒否される形(= Full ControlでDeny)でも良いのではと考えます。

いきなりまとめ

  • ONTAP上でもファイル共有のACLでReadのみの明示的なDenyは認識できる
  • 内部的にアクセスマスクが変わる

やってみた

ファイル共有の作成

早速やってみましょう。

AD DCについては以下記事の検証で使用したものを流用します。

https://dev.classmethod.jp/articles/amazon-fsx-for-netapp-ontap-delegated-file-system-administrators-group/

SMBサーバーがドメインに参加していることを確認して、ファイル共有を作成します。

::> set diag

Warning: These diagnostic commands are for use by NetApp personnel only.
Do you want to continue? {y|n}: y

FsxId01ca0ec2962673930::*> cifs show -instance

                                          Vserver: svm
                         CIFS Server NetBIOS Name: SHARE-TEST
                    NetBIOS Domain/Workgroup Name: CORP
                      Fully Qualified Domain Name: CORP.NON-97.NET
                              Organizational Unit: OU=FSxForONTAP,DC=corp,DC=non-97,DC=net
Default Site Used by LIFs Without Site Membership:
                                   Workgroup Name: -
                                   Kerberos Realm: -
                             Authentication Style: domain
                CIFS Server Administrative Status: up
                          CIFS Server Description:
                          List of NetBIOS Aliases: -

FsxId01ca0ec2962673930::*> cifs share show
Vserver        Share         Path              Properties Comment  ACL
-------------- ------------- ----------------- ---------- -------- -----------
svm            c$            /                 oplocks    -        BUILTIN\Administrators / Full Control
                                               browsable
                                               changenotify
                                               show-previous-versions
svm            ipc$          /                 browsable  -        -
2 entries were displayed.

::*> volume show -fields security-style, junction-path
vserver volume   security-style junction-path
------- -------- -------------- -------------
svm     svm_root unix           /
svm     vol1     unix           /vol1
svm     vol_smb  ntfs           /vol_smb
3 entries were displayed.

::*> cifs share create -vserver svm -share-name smb-share -path /vol_smb

FsxId01ca0ec2962673930::*> cifs share show
Vserver        Share         Path              Properties Comment  ACL
-------------- ------------- ----------------- ---------- -------- -----------
svm            c$            /                 oplocks    -        BUILTIN\Administrators / Full Control
                                               browsable
                                               changenotify
                                               show-previous-versions
svm            ipc$          /                 browsable  -        -
svm            smb-share     /vol_smb          oplocks    -        Everyone / Full Control
                                               browsable
                                               changenotify
                                               show-previous-versions
3 entries were displayed.

作成したファイル共有のACLを確認します。

FsxId01ca0ec2962673930::*> cifs share access-control show -share smb-share
               Share       User/Group                  User/Group  Access
Vserver        Name        Name                        Type        Permission
-------------- ----------- --------------------------- ----------- -----------
svm            smb-share   Everyone                    windows     Full_Control

FsxId01ca0ec2962673930::*> cifs share access-control show -share smb-share -instance

           Vserver: svm
        Share Name: smb-share
   User/Group Name: Everyone
User or Group Type: windows
       Access Type: Full_Control
       Windows SID: S-1-1-0
       Access mask: 1f01ff

EveryoneのFull Controlが付与されていますね。

No AccessのACEの設定

それではNo AccessのACEを追加します。

test-user01というドメインユーザーに対して設定します。

::*> cifs share access-control create -share smb-share -user-or-group CORP\test-user01 -user-group-type windows -permission No_access

FsxId01ca0ec2962673930::*> cifs share access-control show -share smb-share
               Share       User/Group                  User/Group  Access
Vserver        Name        Name                        Type        Permission
-------------- ----------- --------------------------- ----------- -----------
svm            smb-share   CORP\test-user01            windows     No_access
svm            smb-share   Everyone                    windows     Full_Control
2 entries were displayed.

FsxId01ca0ec2962673930::*> cifs share access-control show -share smb-share -instance

           Vserver: svm
        Share Name: smb-share
   User/Group Name: CORP\test-user01
User or Group Type: windows
       Access Type: No_access
       Windows SID: S-1-5-21-38571244-2121234638-1230449559-1606
       Access mask: 1f01ff

           Vserver: svm
        Share Name: smb-share
   User/Group Name: Everyone
User or Group Type: windows
       Access Type: Full_Controlー
       Windows SID: S-1-1-0
       Access mask: 1f01ff
2 entries were displayed.

設定できました。Access mask上ではどちらも1f01ffです。これはFull Controlを表す際のアクセスマスクです。どうやらDenyの場合もAllowの場合もアクセスマスクは同じようですね。アクセスマスクの詳細は以下NetApp KBとMicrosoft公式ドキュメントをご覧ください。

https://kb-ja.netapp.com/onprem/ontap/da/NAS/What_are_NTFS_access_mask_flags_with_corresponding_user_permissions

https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-dtyp/7a53f60e-e730-4dfe-bbe9-b21b62eb790b

それでは、ドメインのAdministratorでログインしているWindowsインスタンスでfsmgmt.mscを起動します。

起動後、FSxN上のSMBサーバーに接続します。

SMBサーバーに接続

SMBサーバー上のファイル共有一覧から作成したファイル共有を選択し、Share Permissionsを確認します。test-user01に対してFull ControlでDenyになっていますね。

No Accessの確認

ReadとChangeのみDeny

ReadとChangeのみDenyにした場合、ONTAP上ではどのように認識されるのか確認します。

test-user01に対してReadとChangeをDenyするように設定変更します。

ChangeとReadのみDeny

設定変更後、ONTAP CLIから様子を見ます。

::*> cifs share access-control show -share smb-share
               Share       User/Group                  User/Group  Access
Vserver        Name        Name                        Type        Permission
-------------- ----------- --------------------------- ----------- -----------
svm            smb-share   CORP\test-user01            windows     No_access
svm            smb-share   Everyone                    windows     Full_Control
2 entries were displayed.

FsxId01ca0ec2962673930::*> cifs share access-control show -share smb-share -instance

           Vserver: svm
        Share Name: smb-share
   User/Group Name: CORP\test-user01
User or Group Type: windows
       Access Type: No_access
       Windows SID: S-1-5-21-38571244-2121234638-1230449559-1606
       Access mask: 1301bf

           Vserver: svm
        Share Name: smb-share
   User/Group Name: Everyone
User or Group Type: windows
       Access Type: Full_Control
       Windows SID: S-1-1-0
       Access mask: 1f01ff
2 entries were displayed.

アクセスマスクが1301bfに変わっていました。Access TypeとしてはNo Accessのままですが、内部的には正しく認識してくれていそうです。

ReadのみDenyにした場合

ReadのみDenyにした場合も確認します。

test-user01に対してReadをDenyするように設定変更します。

ReadのみDeny

ONTAP CLIから様子を見ます。

::*> cifs share access-control show -share smb-share
               Share       User/Group                  User/Group  Access
Vserver        Name        Name                        Type        Permission
-------------- ----------- --------------------------- ----------- -----------
svm            smb-share   CORP\test-user01            windows     No_access
svm            smb-share   Everyone                    windows     Full_Control
2 entries were displayed.

FsxId01ca0ec2962673930::*> cifs share access-control show -share smb-share -instance

           Vserver: svm
        Share Name: smb-share
   User/Group Name: CORP\test-user01
User or Group Type: windows
       Access Type: No_access
       Windows SID: S-1-5-21-38571244-2121234638-1230449559-1606
       Access mask: 1200a9

           Vserver: svm
        Share Name: smb-share
   User/Group Name: Everyone
User or Group Type: windows
       Access Type: Full_Control
       Windows SID: S-1-1-0
       Access mask: 1f01ff
2 entries were displayed.

今度はアクセスマスクが1200a9に変わっていますね。問題なさそうです。

アクセスマスクをONTAP CLIで設定できるか

アクセスマスクはONTAP CLIから設定できるのでしょうか。気になってきました。

残念ながらできません。ファイル共有のACLを変更するコマンドを確認しましたが、アクセスマスクを指定するオプションはありませんでした。

::*> cifs share access-control create ?
  [ -vserver <vserver name> ]                          Vserver (default: svm)
   [-share] <Share>                                    Share Name
   [-user-or-group] <TextNoCase>                       User/Group Name
  [ -user-group-type {windows|unix-user|unix-group} ]  User or Group Type (default: windows)
   [-permission] <access rights>                       Access Type

FsxId01ca0ec2962673930::*> cifs share access-control modify ?
  [ -vserver <vserver name> ]                          Vserver (default: svm)
   [-share] <Share>                                    Share Name
   [-user-or-group] <TextNoCase>                       User/Group Name
  [ -user-group-type {windows|unix-user|unix-group} ]  User or Group Type (default: windows)
  [[-permission] <access rights>]                      Access Type
  [ -winsid <windows sid> ]                            Windows SID

FsxId01ca0ec2962673930::*> cifs share access-control modify -permission ?
  No_access                   No access
  Read                        Read
  Change                      Change
  Full_Control                Full Control

MMCスナップインからACEを追加した場合

最後にMMCスナップインからACEを追加した場合も確認します。

test-user02に対するReadとChangeのDenyをするACEを追加しました。

MMCスナップインからACEを追加

ONTAP CLIから様子を見ます。

::*> cifs share access-control show -share smb-share
               Share       User/Group                  User/Group  Access
Vserver        Name        Name                        Type        Permission
-------------- ----------- --------------------------- ----------- -----------
svm            smb-share   CORP\test-user01            windows     No_access
svm            smb-share   CORP\test-user02            windows     No_access
svm            smb-share   Everyone                    windows     Full_Control
3 entries were displayed.

FsxId01ca0ec2962673930::*> cifs share access-control show -share smb-share -instance

           Vserver: svm
        Share Name: smb-share
   User/Group Name: CORP\test-user01
User or Group Type: windows
       Access Type: No_access
       Windows SID: S-1-5-21-38571244-2121234638-1230449559-1606
       Access mask: 1200a9

           Vserver: svm
        Share Name: smb-share
   User/Group Name: CORP\test-user02
User or Group Type: windows
       Access Type: No_access
       Windows SID: S-1-5-21-38571244-2121234638-1230449559-1607
       Access mask: 1301bf

           Vserver: svm
        Share Name: smb-share
   User/Group Name: Everyone
User or Group Type: windows
       Access Type: Full_Control
       Windows SID: S-1-1-0
       Access mask: 1f01ff
3 entries were displayed.

test-user02に対してNo Accessでアクセスマスクが1301bfと意図したものになっていますね。

ファイル共有に対してReadのみ、ReadとChangeのみDenyしたい場合は手動で設定変更をしよう

ファイル共有のACLでReadのみの明示的なDenyをONTAPが認識できるのか確認しました。

答えとしては問題なく認識できます。

ただし、ONTAP CLIやONTAP REST APIでは操作できないため、ファイル共有に対してReadのみ、ReadとChangeのみDenyしたい場合は手動で設定変更をしましょう。

なお、ChangeのみDenyというのはMMCスナップイン等GUIからはできません。Changeのチェックボックスにチェックを入れると、自動でReadのチェックボックスにもチェックが入ります。

この記事が誰かの助けになれば幸いです。

以上、AWS事業本部 コンサルティング部の のんピ(@non____97)でした!

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.